/*
 * Carreras.java
 *
 * Created on Oct 31, 2008, 6:42:44 PM
 */
package wasolicitudesfiec.Administracion.Carreras;

import com.sun.rave.web.ui.appbase.AbstractPageBean;

import com.sun.rave.web.ui.component.Alert;
import com.sun.rave.web.ui.component.Breadcrumbs;
import com.sun.rave.web.ui.component.Hyperlink;
import com.sun.rave.web.ui.model.DefaultTableDataProvider;
import entidad.Parametro;
import entidad.Persona;
import entidad.Usuario;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import wasolicitudesfiec.SessionBean1;
import wasolicitudesfiec.RequestBean1;
import wasolicitudesfiec.ApplicationBean1;
import wasolicitudesfiec.Menu;
import wasolicitudesfiec.Administracion.Carreras.dataproviders.Dp_Carrera;
import wasolicitudesfiec.authentication.AuthenticationPhaseListener;
import wasolicitudesfiec.logicacontrol.CTRL_Base;
import wasolicitudesfiec.logicacontrol.Logica;
import web.util.Constantes;
import web.util.ManejadorCookies;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @author kabad
 */
public class Carreras extends AbstractPageBean {
	// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

	private Dp_Carrera dp_Carrera = new Dp_Carrera();
	private HttpServletRequest request;
	private HttpServletResponse response;

	public Dp_Carrera getDp_Carrera() {
		return dp_Carrera;
	}

	public void setDp_Carrera(Dp_Carrera dp_Carrera) {
		this.dp_Carrera = dp_Carrera;
	}
	private Alert alert1 = new Alert();

	public Alert getAlert1() {
		return alert1;
	}

	public void setAlert1(Alert a) {
		this.alert1 = a;
	}

	/**
	 * <p>Construct a new Page bean instance.</p>
	 */
	public Carreras() {
	}

	/**
	 * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
	 * This method is automatically generated, so any user-specified code inserted
	 * here is subject to being replaced.</p>
	 */
	private void _init() throws Exception {
	}

	// </editor-fold>
	@Override
	public void init() {
		FacesMessage message;
		Vector<Parametro> listaCarrera;
		// Perform initializations inherited from our superclass
        super.init();
			// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
			// Initialize automatically managed components
			// *Note* - this logic should NOT be modified
			try {
				_init();
			} catch (Exception e) {
				log("Carreras Initialization Failure", e);
				throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
			}

			// </editor-fold>
         Usuario usuario = (Usuario) getSessionMap().get(AuthenticationPhaseListener.USER_SESSION_KEY);
        Logica logica = new Logica();
        String nombreRol = Constantes.Rol.Administrador.getNombreEnBD();
        try {
            Persona persona = logica.leerPersonaPorUsuario(usuario.getUsuario());
            if (!logica.isUsuarioMiembrodeRol(persona.getIdPersona(), nombreRol)) {
                CTRL_Base ctrl = new CTRL_Base(this.getFacesContext());
                ctrl.addCookieMensaje(Constantes.Mensajes.noAdministrador, null);
                ctrl.redireccionar("/WA_SolicitudesFIEC/faces/general/Mensaje.jsp");
            }

        } catch (SQLException ex) {
            Logger.getLogger(Carreras.class.getName()).log(Level.SEVERE, null, ex);
            message = new FacesMessage(FacesMessage.SEVERITY_FATAL, ex.getMessage(), "");
            getFacesContext().addMessage(null, message);
        }
		
		try {
            this.getMenu().setTitulo("Carreras");
			listaCarrera = logica.leerTodasLasCarreras();
			this.getDp_Carrera().setListaRg_Parametro(listaCarrera);
		} catch (SQLException ex) {
			message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ocurrió un error no esperado, comuníquese con el administrador del sistema", ex.getLocalizedMessage());
			getFacesContext().addMessage(null, message);
			Logger.getLogger(Carreras.class.getName()).log(Level.SEVERE, null, ex);
		}
		request = (HttpServletRequest) getFacesContext().getExternalContext().getRequest();
		response = (HttpServletResponse) getFacesContext().getExternalContext().getResponse();
		Cookie mensaje = ManejadorCookies.leerCookieMensaje(request);
		if (mensaje != null) {
			getAlert1().setSummary(mensaje.getValue());
			getAlert1().setVisible(true);
			ManejadorCookies.borrarCookie(response, mensaje);
		} else {
			getAlert1().setVisible(false);
		}
	}

	public Menu getMenu() {
		return (Menu) getBean("SolicitudesFIEC$Menu");
	}

	@Override
	public void preprocess() {
	}

	/**
	 * <p>Callback method that is called just before rendering takes place.
	 * This method will <strong>only</strong> be called for the page that
	 * will actually be rendered (and not, for example, on a page that
	 * handled a postback and then navigated to a different page).  Customize
	 * this method to allocate resources that will be required for rendering
	 * this page.</p>
	 */
	@Override
	public void prerender() {
	}

	/**
	 * <p>Callback method that is called after rendering is completed for
	 * this request, if <code>init()</code> was called (regardless of whether
	 * or not this was the page that was actually rendered).  Customize this
	 * method to release resources acquired in the <code>init()</code>,
	 * <code>preprocess()</code>, or <code>prerender()</code> methods (or
	 * acquired during execution of an event handler).</p>
	 */
	@Override
	public void destroy() {
	}

	/**
	 * <p>Return a reference to the scoped data bean.</p>
	 *
	 * @return reference to the scoped data bean
	 */
	protected SessionBean1 getSessionBean1() {
		return (SessionBean1) getBean("SessionBean1");
	}

	/**
	 * <p>Return a reference to the scoped data bean.</p>
	 *
	 * @return reference to the scoped data bean
	 */
	protected RequestBean1 getRequestBean1() {
		return (RequestBean1) getBean("RequestBean1");
	}

	/**
	 * <p>Return a reference to the scoped data bean.</p>
	 *
	 * @return reference to the scoped data bean
	 */
	protected ApplicationBean1 getApplicationBean1() {
		return (ApplicationBean1) getBean("ApplicationBean1");
	}

	public String btnNuevo_action() {
//		Vector<Parametro> listaRg_Parametro = new Vector<Parametro>();
//		this.getExternalContext().getSessionMap().put("lista", listaRg_Parametro);

		return "mantenimientoCarrera";
	}

	public String linkEliminar_action() {
		return null;
	}

	public String hyperlink3_action() {
		// TODO: Replace with your code
		return "hola";
	}
}

